package com.whfc.ms.api.emp.service;


import com.whfc.common.result.PageData;
import com.whfc.emp.dto.AppEmpDTO;
import com.whfc.emp.dto.AppTrainDTO;
import com.whfc.emp.dto.AppTrainEmpDTO;
import com.whfc.emp.param.*;
import com.whfc.entity.dto.OssPathDTO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @ClasssName MsTrainService
 * @Description 人员管理-培训
 * @Author hw
 * @Date 2020/11/26 17:23
 * @Version 1.0
 */
public interface MsTrainService {

    /**
     * 人员管理-培训列表
     *
     * @param request
     * @return
     */
    PageData<AppTrainDTO> list(AppTrainListParam request);

    /**
     * 人员管理-新增培训
     *
     * @param request
     */
    void add(AppTrainAddParam request);

    /**
     * 人员管理-编辑培训
     *
     * @param request
     */
    void edit(AppTrainEditParam request);

    /**
     * 人员管理-删除培训
     *
     * @param trainId
     */
    void del(Integer trainId);

    /**
     * 人员管理-完成培训
     *
     * @param trainId
     */
    void complete(Integer trainId);

    /**
     * 人员管理-培训人员列表
     *
     * @param request
     * @return
     */
    PageData<AppTrainEmpDTO> trainEmpList(AppTrainEmpListParam request);

    /**
     * 人员管理-添加培训人员
     *
     * @param request
     */
    void trainEmpAdd(AppTrainEmpAddParam request);

    /**
     * 人员管理-删除培训人员
     *
     * @param request
     */
    void trainEmpDel(AppTrainEmpDelParam request);

    /**
     * 人员管理-添加修改培训分数
     *
     * @param request
     */
    void score(AppTrainScoreParam request);

    /**
     * 获取可添加的培训人员列表
     *
     * @param pageNum
     * @param pageSize
     * @param trainId
     * @param keyword
     * @param groupId
     * @return
     */
    PageData<AppEmpDTO> getEmpList(Integer pageNum, Integer pageSize, Integer trainId, String keyword, Integer groupId);

    /**
     * 人员管理-培训列表（人员id）
     *
     * @param empId
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<AppTrainEmpDTO> list(Integer empId, Integer pageNum, Integer pageSize);

    /**
     * 上传附件
     *
     * @param file
     * @return
     */
    OssPathDTO uploadImg(MultipartFile file);

    /**
     * 上传base64图片
     *
     * @param signImgBase64Str 签名图片base64
     * @param trainEmpId       培训人员ID
     * @return
     */
    @Deprecated
    void uploadSignImg(String signImgBase64Str, Integer trainEmpId);

    /**
     * 保存培训人员图片
     *
     * @param trainEmpId 培训人员ID
     * @param imgUrlList 图片列表
     */
    void saveTrainEmpImg(Integer trainEmpId, List<String> imgUrlList);

}
